package com.zmn.plat.business.interfaces.price.meter3;

import com.zmn.plat.common.dto.price.ItemTo;
import com.zmn.plat.common.dto.price.meter3.ItemDRO3;
import com.zmn.plat.common.dto.price.meter3.ProductTariffTypeDRO;
import com.zmn.plat.common.dto.price.meter3.ProductTariffTypeQuery;
import com.zmn.plat.model.dto.price.PriceCalDTO;

import java.util.List;

/**
 * 描述: 计价器3.0公用接口类
 *
 * @author guoqiao
 * @since 2021/11/18 16:34
 */
public interface MeterFlow3CommonBService {

    /**
     * 描述: 通过渠道、后台产品、价格表类型获取支持的价格表信息
     * 1.只考虑价格表有对应服务项
     * 返回null，表示不支持
     *
     * @param channelId     渠道id
     * @param productId     后台产品id（切记是后台！）
     * @param bizType       业务类型
     * @param tariffType    1 服务价格表 2 计价器价格表 3 提前付价格表 4 计价器3.0价格表
     * @return com.zmn.plat.common.dto.price.meter3.ProductTariffTypeDRO
     * @author guoqiao
     * @since 2021/11/19 14:25
     */
    ProductTariffTypeDRO getProductTariffType(Integer channelId, Integer productId, Integer bizType, Integer tariffType);

    /**
     * 描述: 查询产品优先支持的价格表
     * 条件：1.满足对应的试点配置； 2.满足价格表有对应服务项
     * 
     * @param query
     * @return List<com.zmn.plat.common.dto.price.meter3.ProductTariffTypeDRO>
     * @author guoqiao
     * @since 2021/11/18 10:45
     */
    List<ProductTariffTypeDRO> listProductTariffTypeByQuery(ProductTariffTypeQuery query);

    /**
     * 描述: 计算销售价价格和内部价，并设置价格相关的属性
     *
     * @author guoqiao
     * @since 2021/8/27 11:43
     */
    void calPriceDetail(ItemDRO3 itemDRO3, PriceCalDTO calDTO);


}
